/*
 * Copyright (c) 田梓萱 2021-2022.
 * All Rights Reserved.
 * All codes are protected by China's regulations on the protection of computer software, and infringement must be investigated.
 * 版权所有 (c) 田梓萱 2021-2022.
 * 所有代码均受中国《计算机软件保护条例》保护，本项目已获得软著.
 */

package com.xcl.calculator.slice.QinQiCal;

import com.huawei.agconnect.crash.AGConnectCrash;
import com.xcl.calculator.Dialog.MyToastDialog;
import com.xcl.calculator.Preference_RW;
import com.xcl.calculator.ResourceTable;
import com.xcl.calculator.XLog;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
import ohos.agp.utils.LayoutAlignment;
import ohos.agp.window.service.WindowManager;
import ohos.data.distributed.common.KvManagerConfig;
import ohos.data.distributed.common.KvManagerFactory;
import ohos.distributedhardware.devicemanager.DeviceInfo;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.multimodalinput.event.KeyEvent;
import ohos.multimodalinput.event.MmiPoint;
import ohos.multimodalinput.event.TouchEvent;
import ohos.utils.PacMap;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.xcl.calculator.MyApplication.instance_hi;

/**
 * The type Family ability slice.
 *
 * @author Xcl
 * @date 2022 /1/3
 * @package com.xcl.calculator.slice.QinQiCal
 */
public class FamilyAbilitySlice extends AbilitySlice implements Component.TouchEventListener {
    /**
     * The constant label.
     */
    private static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00234, "FamilyAbilitySlice");
    /**
     * The constant MAXSIZE.
     */
    private final static int MAXSIZE = 22;
    /**
     * The constant text.
     */
    private static String text = null;
    /**
     * The constant text1.
     */
    private static String text1 = null;
    /**
     * The constant sex.
     */
    private static String sex = "null";
    /**
     * The Familydata 0.
     */
    private final StringBuffer familydata0 = new StringBuffer();// 存储输入数据
    /**
     * The Familybackdata.
     */
    private final Stackm<SqListm> familybackdata = new Stackm<SqListm>();
    /**
     * The Family hash map 0.
     */
    private final HashMap<String, String> FamilyHashMap0 = new HashMap<String, String>(1200);
    /**
     * The Family hash map 1.
     */
    private final HashMap<String, String> FamilyHashMap1 = new HashMap<String, String>(1200);
    /**
     * The Starx.
     */
    private float starx;
    /**
     * The Stary.
     */
    private float stary;
    /**
     * The Endx.
     */
    private float endx;
    /**
     * The Endy.
     */
    private float endy;
    /**
     * The Familydata 1.
     */
    private SqListm familydata1 = null;//存储用户当前输入且化简后的亲戚关系
    /**
     * The Familyhuchadata.
     */
    private String familyhuchadata = "";

    /**
     * 性别判断
     *
     * @return boolean boolean
     */
    private static boolean isSex() {
        boolean temp = true;
        try {
            // 倒数第三个字符串sex
            switch (sex) {
                case "h":
                case "f":
                case "ob":
                case "lb":
                case "s": {//丈夫、父亲、哥哥、弟弟、儿子-男性
                    temp = true;
                    break;
                }
                case "w":
                case "m":
                case "os":
                case "ls":
                case "d": {//妻子、母亲、姐姐、妹妹、女儿-女性
                    temp = false;
                    break;
                }
            }
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
        return temp;
    }

    /**
     * 切换后台并销毁，防止手表抽风
     */
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        this.terminateAbility();
    }

    /**
     * 开始
     *
     * @param intent the intent
     */
    @Override
    public void onStart(Intent intent) {
        try {
            XLog.pd_pd = Preference_RW.ff7_r();
            this.getWindow().addFlags(WindowManager.LayoutConfig.MARK_ALLOW_EXTEND_LAYOUT);
            ohos.data.distributed.device.DeviceInfo localDeviceInfo = KvManagerFactory.getInstance()
                    .createKvManager(new KvManagerConfig((this))).getLocalDeviceInfo();
            int localDeviceType = Integer.parseInt(localDeviceInfo.getType());
            if (localDeviceType == DeviceInfo.DeviceType.PHONE.value()) {
                this.setUIContent(ResourceTable.Layout_familym);
                XLog.info(label, "当前设备类型为手机");
            } else if (localDeviceType == DeviceInfo.DeviceType.TABLET.value()) {
                this.setUIContent(ResourceTable.Layout_familyt);
                XLog.info(label, "当前设备类型为平板");
            } else {
                XLog.warn(label, "暂不支持您的设备:(" + localDeviceInfo.getType() + ")");
                this.terminateAbility();
            }

            this.findComponentById(ResourceTable.Id_family).setTouchEventListener(this);
            super.onStart(intent);
            Text question = (Text) this.findComponentById(ResourceTable.Id_fques_field);
            Text answer = (Text) this.findComponentById(ResourceTable.Id_fans_field);
            this.familydata1 = new SqListm(12);
            this.familydata1.add("");
            this.initData();
            this.findComponentById(ResourceTable.Id_fback_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                    if (FamilyAbilitySlice.this.familydata1.getItem(0).length() != 0 && !FamilyAbilitySlice.this.familybackdata.isEmpty())
                        FamilyAbilitySlice.this.familydata1 = FamilyAbilitySlice.this.familybackdata.pop();
                    else
                        FamilyAbilitySlice.this.familydata1.clear();
                    if (FamilyAbilitySlice.this.familydata0.length() > 1)
                        FamilyAbilitySlice.this.familydata0.delete(FamilyAbilitySlice.this.familydata0.length() - 3, FamilyAbilitySlice.this.familydata0.length());
                    question.setText(String.valueOf(FamilyAbilitySlice.this.familydata0));
                    if (FamilyAbilitySlice.this.familydata1.length() != 0) {
                        String temptemp = FamilyAbilitySlice.this.familydata1.getItem(0);
                        FamilyAbilitySlice.sex = (temptemp.indexOf(',') == -1) ? temptemp
                                : temptemp.substring(temptemp.lastIndexOf(',') + 1);
                        if (FamilyAbilitySlice.isSex()) {
                            FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                            FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        } else {
                            FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                            FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        }
                    }
                }
            });//撤回

            this.findComponentById(ResourceTable.Id_fclean_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                    FamilyAbilitySlice.this.familydata0.delete(0, FamilyAbilitySlice.this.familydata0.length());
                    FamilyAbilitySlice.this.familydata0.append("我");
                    question.setText("");
                    answer.setText("");
                    FamilyAbilitySlice.this.familydata1.clear();

                }
            });//清空

            this.findComponentById(ResourceTable.Id_fcal_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(false);
                    String results = FamilyAbilitySlice.this.searchFamily();
                    if (results.length() == 0) answer.setText("关系过远呢!");
                    else answer.setText(results);
                    //TODO:自定义埋点开始，在工程合适位置插入埋点代码
                    PacMap pacMap = new PacMap();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
                    pacMap.putString("user_uuid", "[" + Preference_RW.uuid.toString() + "]");
                    pacMap.putString("start_num", "[" + question.getText() + "]");
                    pacMap.putString("end_num", "[正向=" + answer.getText() + "]");
                    pacMap.putString("se_time", "[" + df.format(new Date()) + "]");
                    instance_hi.onEvent("jtcwjsq", pacMap);
                    //TODO:埋点结束
                    FamilyAbilitySlice.this.familydata0.delete(0, FamilyAbilitySlice.this.familydata0.length());
                    FamilyAbilitySlice.this.familydata0.append("我");
                    FamilyAbilitySlice.this.familyhuchadata = FamilyAbilitySlice.this.familydata1.getItem(0);
                    FamilyAbilitySlice.this.familydata1.clear();
                    FamilyAbilitySlice.this.familybackdata.clearStack();
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(true);
                }
            });//计算
            this.findComponentById(ResourceTable.Id_flac_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    String results = "";
                    question.setText("TA称呼我");
                    Stackm<String> tempStackm = new Stackm<String>();
                    FamilyAbilitySlice.this.familyhuchadata += ",";
                    int position = 0;
                    while (FamilyAbilitySlice.this.familyhuchadata.length() != 0) {
                        position = FamilyAbilitySlice.this.familyhuchadata.indexOf(',');
                        tempStackm.push(FamilyAbilitySlice.this.familyhuchadata.substring(0, position));
                        FamilyAbilitySlice.this.familyhuchadata = FamilyAbilitySlice.this.familyhuchadata.substring(position + 1);
                    }
                    String tempKey = "";
                    while (!tempStackm.isEmpty()) {
                        tempKey = tempStackm.pop();
                        FamilyAbilitySlice.sex = tempStackm.getTop();
                        if (FamilyAbilitySlice.sex != null) {
                            if (tempKey.equals("h") || tempKey.equals("w") || tempKey.equals(""))
                                FamilyAbilitySlice.this.familydata1.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey));
                            else if (FamilyAbilitySlice.isSex())
                                FamilyAbilitySlice.this.familydata1.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey + "M"));
                            else
                                FamilyAbilitySlice.this.familydata1.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey + "F"));
                            FamilyAbilitySlice.this.simplyFamily();
                        } else if (tempKey.equals("h") || tempKey.equals("w") || tempKey.equals("")) {
                            FamilyAbilitySlice.this.familydata1.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey));
                            FamilyAbilitySlice.this.simplyFamily();
                            results = FamilyAbilitySlice.this.searchFamily();
                        } else {
                            SqListm temptemp = new SqListm(FamilyAbilitySlice.this.familydata1);
                            FamilyAbilitySlice.this.familydata1.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey + "M"));
                            temptemp.allItemAppend(FamilyAbilitySlice.this.FamilyHashMap1.get(tempKey + "F"));
                            FamilyAbilitySlice.this.familydata1.combine(temptemp);
                            FamilyAbilitySlice.this.simplyFamily();
                            results = FamilyAbilitySlice.this.searchFamily();
                        }
                    }
                    if (results.length() != 0) answer.setText(results);
                    else answer.setText("关系过远呢!");
                    //TODO:自定义埋点开始，在工程合适位置插入埋点代码
                    PacMap pacMap = new PacMap();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
                    pacMap.putString("user_uuid", "[" + Preference_RW.uuid.toString() + "]");
                    pacMap.putString("start_num", "[" + question.getText() + "]");
                    pacMap.putString("end_num", "[反向=" + answer.getText() + "]");
                    pacMap.putString("se_time", "[" + df.format(new Date()) + "]");
                    instance_hi.onEvent("jtcwjsq", pacMap);
                    //TODO:埋点结束
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(false);
                    FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                    FamilyAbilitySlice.this.familydata1.clear();
                }
            });//互查
            this.findComponentById(ResourceTable.Id_fback_button).setEnabled(false);
            this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
            this.PanDuanKeDian();
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
    }

    /**
     * 初始化数据
     */
    private void initData() {
        try {
            this.familydata0.delete(0, this.familydata0.length());
            this.familydata0.append("我");
            /*----------------------------最简亲戚关系----------------------------*/
            this.FamilyHashMap0.put("", "自己");
            this.FamilyHashMap0.put("f", "父亲");
            this.FamilyHashMap0.put("f,f", "爷爷");
            this.FamilyHashMap0.put("f,f,f", "曾祖父");
            this.FamilyHashMap0.put("f,f,f,f", "高祖父");
            this.FamilyHashMap0.put("f,f,f,f,f", "天祖父");
            this.FamilyHashMap0.put("f,f,f,f,f,f", "烈祖父");
            this.FamilyHashMap0.put("f,f,f,f,f,m", "烈祖母");
            this.FamilyHashMap0.put("f,f,f,f,f,f,f", "太祖父");
            this.FamilyHashMap0.put("f,f,f,f,f,f,m", "太祖母");
            this.FamilyHashMap0.put("f,f,f,f,m", "天祖母");
            this.FamilyHashMap0.put("f,f,f,f,ob", "伯高祖父");
            this.FamilyHashMap0.put("f,f,f,f,ob,w", "伯高祖母");
            this.FamilyHashMap0.put("f,f,f,f,lb", "叔高祖父");
            this.FamilyHashMap0.put("f,f,f,f,lb,w", "叔高祖母");
            this.FamilyHashMap0.put("f,f,f,f,os", "姑高祖母");
            this.FamilyHashMap0.put("f,f,f,f,ls", "姑高祖母");
            this.FamilyHashMap0.put("f,f,f,f,os,h", "姑高祖父");
            this.FamilyHashMap0.put("f,f,f,f,ls,h", "姑高祖父");
            this.FamilyHashMap0.put("f,f,f,m", "高祖母");
            this.FamilyHashMap0.put("f,f,f,m,os", "姨高祖母");
            this.FamilyHashMap0.put("f,f,f,m,ls", "姨高祖母");
            this.FamilyHashMap0.put("f,f,f,m,os,h", "姨高祖父");
            this.FamilyHashMap0.put("f,f,f,m,ls,h", "姨高祖父");
            this.FamilyHashMap0.put("f,f,f,ob", "曾伯祖父");
            this.FamilyHashMap0.put("f,f,f,ob,w", "曾伯祖母");
            this.FamilyHashMap0.put("f,f,f,lb", "曾叔祖父");
            this.FamilyHashMap0.put("f,f,f,lb,w", "曾叔祖母");
            this.FamilyHashMap0.put("f,f,f,ob,s", "堂伯祖父/堂叔祖父");
            this.FamilyHashMap0.put("f,f,f,lb,s", "堂伯祖父/堂叔祖父");
            this.FamilyHashMap0.put("f,f,f,ob,s,w", "堂伯祖母/堂叔祖母");
            this.FamilyHashMap0.put("f,f,f,lb,s,w", "堂伯祖母/堂叔祖母");
            this.FamilyHashMap0.put("f,f,f,ob,s,s", "从伯父/从叔父");
            this.FamilyHashMap0.put("f,f,f,lb,s,s", "从伯父/从叔父");
            this.FamilyHashMap0.put("f,f,f,ob,s,s,w", "从伯母/从叔母");
            this.FamilyHashMap0.put("f,f,f,lb,s,s,w", "从伯母/从叔母");
            this.FamilyHashMap0.put("f,f,f,ob,s,s,s", "族兄/族弟");
            this.FamilyHashMap0.put("f,f,f,lb,s,s,s", "族兄/族弟");
            this.FamilyHashMap0.put("f,f,f,ob,d", "堂姑祖母");
            this.FamilyHashMap0.put("f,f,f,lb,d", "堂姑祖母");
            this.FamilyHashMap0.put("f,f,f,ob,d,h", "堂姑祖父");
            this.FamilyHashMap0.put("f,f,f,lb,d,h", "堂姑祖父");
            this.FamilyHashMap0.put("f,f,f,os", "曾祖姑母");
            this.FamilyHashMap0.put("f,f,f,ls", "曾祖姑母");
            this.FamilyHashMap0.put("f,f,f,os,h", "曾祖姑丈");
            this.FamilyHashMap0.put("f,f,f,ls,h", "曾祖姑丈");
            this.FamilyHashMap0.put("f,f,f,os,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,f,ls,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,f,os,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,f,ls,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,f,os,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,f,ls,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,f,os,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,f,ls,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,m", "曾祖母");
            this.FamilyHashMap0.put("f,f,m,f", "高外祖父");
            this.FamilyHashMap0.put("f,f,m,m", "高外祖母");
            this.FamilyHashMap0.put("f,f,m,ob", "舅曾祖父");
            this.FamilyHashMap0.put("f,f,m,lb", "舅曾祖父");
            this.FamilyHashMap0.put("f,f,m,ob,w", "舅曾祖母");
            this.FamilyHashMap0.put("f,f,m,lb,w", "舅曾祖母");
            this.FamilyHashMap0.put("f,f,m,ob,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,m,ob,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,m,lb,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,m,lb,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,m,os,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,m,os,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,m,ls,s", "表伯祖父/表叔祖父");
            this.FamilyHashMap0.put("f,f,m,ls,s,w", "表伯祖母/表叔祖母");
            this.FamilyHashMap0.put("f,f,m,ob,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,m,lb,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,m,ob,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,m,lb,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,m,os", "姨曾祖母");
            this.FamilyHashMap0.put("f,f,m,ls", "姨曾祖母");
            this.FamilyHashMap0.put("f,f,m,os,h", "姨曾祖父");
            this.FamilyHashMap0.put("f,f,m,ls,h", "姨曾祖父");
            this.FamilyHashMap0.put("f,f,m,os,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,m,ls,d", "表姑祖母");
            this.FamilyHashMap0.put("f,f,m,os,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,m,ls,d,h", "表姑祖父");
            this.FamilyHashMap0.put("f,f,ob,s", "堂伯/堂叔");
            this.FamilyHashMap0.put("f,f,ob,s,w", "堂伯母/堂叔母");
            this.FamilyHashMap0.put("f,f,lb,ls", "堂伯/堂叔");
            this.FamilyHashMap0.put("f,f,lb,s,w", "堂伯母/堂叔母");
            this.FamilyHashMap0.put("f,f,ob,s,s", "从兄/从弟");
            this.FamilyHashMap0.put("f,f,ob,s,s,w", "从嫂/从弟妹");
            this.FamilyHashMap0.put("f,f,lb,s,s", "从兄/从弟");
            this.FamilyHashMap0.put("f,f,lb,s,s,w", "从嫂/从弟妹");
            this.FamilyHashMap0.put("f,f,ob", "堂祖父");
            this.FamilyHashMap0.put("f,f,lb", "堂祖父");
            this.FamilyHashMap0.put("f,f,ob,w", "堂祖母");
            this.FamilyHashMap0.put("f,f,lb,w", "堂祖母");
            this.FamilyHashMap0.put("f,f,ob,s,w", "堂婶");
            this.FamilyHashMap0.put("f,f,lb,s,w", "堂婶");
            this.FamilyHashMap0.put("f,f,ob,s,s,s", "从侄");
            this.FamilyHashMap0.put("f,f,lb,s,s,s", "从侄");
            this.FamilyHashMap0.put("f,f,ob,s,s,s,w", "从侄媳妇");
            this.FamilyHashMap0.put("f,f,lb,s,s,s,w", "从侄媳妇");
            this.FamilyHashMap0.put("f,f,ob,s,s,s,s", "从侄孙");
            this.FamilyHashMap0.put("f,f,lb,s,s,s,s", "从侄孙");
            this.FamilyHashMap0.put("f,f,ob,s,s,s,d", "从侄孙女");
            this.FamilyHashMap0.put("f,f,lb,s,s,s,d", "从侄孙女");
            this.FamilyHashMap0.put("f,f,ob,s,s,d", "从侄女");
            this.FamilyHashMap0.put("f,f,lb,s,s,d", "从侄女");
            this.FamilyHashMap0.put("f,f,ob,s,s,d,h", "从侄女婿");
            this.FamilyHashMap0.put("f,f,lb,s,s,d,h", "从侄女婿");
            this.FamilyHashMap0.put("f,f,ob,s,d", "从姐/从妹");
            this.FamilyHashMap0.put("f,f,ob,s,d,h", "从姐夫/从妹夫");
            this.FamilyHashMap0.put("f,f,lb,s,d", "从姐/从妹");
            this.FamilyHashMap0.put("f,f,lb,s,d,h", "从姐夫/从妹夫");
            this.FamilyHashMap0.put("f,f,ob,d", "堂姑");
            this.FamilyHashMap0.put("f,f,lb,d", "堂姑");
            this.FamilyHashMap0.put("f,f,ob,d,h", "堂姑丈");
            this.FamilyHashMap0.put("f,f,lb,d,h", "堂姑丈");
            this.FamilyHashMap0.put("f,f,ob,d,s", "堂姑表兄/堂姑表弟");
            this.FamilyHashMap0.put("f,f,lb,d,s", "堂姑表兄/堂姑表弟");
            this.FamilyHashMap0.put("f,f,ob,d,d", "堂姑表姐/堂姑表妹");
            this.FamilyHashMap0.put("f,f,lb,d,d", "堂姑表姐/堂姑表妹");
            this.FamilyHashMap0.put("f,f,ob", "伯祖父");
            this.FamilyHashMap0.put("f,f,ob,w", "伯祖母");
            this.FamilyHashMap0.put("f,f,lb", "叔祖父");
            this.FamilyHashMap0.put("f,f,lb,w", "叔祖母");
            this.FamilyHashMap0.put("f,f,os", "姑奶奶");
            this.FamilyHashMap0.put("f,f,ls", "姑奶奶");
            this.FamilyHashMap0.put("f,f,os,h", "姑爷爷");
            this.FamilyHashMap0.put("f,f,ls,h", "姑爷爷");
            this.FamilyHashMap0.put("f,f,os,s", "姑表伯父/姑表叔父");
            this.FamilyHashMap0.put("f,f,os,s,w", "姑表伯母/姑表叔母");
            this.FamilyHashMap0.put("f,f,ls,s", "姑表伯父/姑表叔父");
            this.FamilyHashMap0.put("f,f,ls,s,w", "姑表伯母/姑表叔母");
            this.FamilyHashMap0.put("f,f,os,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,f,ls,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,f,os,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,f,ls,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,f,os,d", "姑表姑母");
            this.FamilyHashMap0.put("f,f,ls,d", "姑表姑母");
            this.FamilyHashMap0.put("f,f,os,d,h", "姑表姑父");
            this.FamilyHashMap0.put("f,f,ls,d,h", "姑表姑父");
            this.FamilyHashMap0.put("f,f,os,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,f,ls,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,f,os,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,f,ls,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m", "奶奶");
            this.FamilyHashMap0.put("f,m,f", "曾外祖父");
            this.FamilyHashMap0.put("f,m,f,f", "曾外曾祖父");
            this.FamilyHashMap0.put("f,m,f,m", "曾外曾祖母");
            this.FamilyHashMap0.put("f,m,f,ob,s", "堂舅祖父");
            this.FamilyHashMap0.put("f,m,f,lb,s", "堂舅祖父");
            this.FamilyHashMap0.put("f,m,f,ob,s,w", "堂舅祖母");
            this.FamilyHashMap0.put("f,m,f,lb,s,w", "堂舅祖母");
            this.FamilyHashMap0.put("f,m,f,ob,d", "堂姨祖母");
            this.FamilyHashMap0.put("f,m,f,lb,d", "堂姨祖母");
            this.FamilyHashMap0.put("f,m,f,ob,d,h", "堂姨祖父");
            this.FamilyHashMap0.put("f,m,f,lb,d,h", "堂姨祖父");
            this.FamilyHashMap0.put("f,m,f,ob", "伯曾外祖父");
            this.FamilyHashMap0.put("f,m,f,ob,w", "伯曾外祖母");
            this.FamilyHashMap0.put("f,m,f,lb", "叔曾外祖父");
            this.FamilyHashMap0.put("f,m,f,lb,w", "叔曾外祖母");
            this.FamilyHashMap0.put("f,m,f,os", "姑曾外祖母");
            this.FamilyHashMap0.put("f,m,f,ls", "姑曾外祖母");
            this.FamilyHashMap0.put("f,m,f,os,h", "姑曾外祖父");
            this.FamilyHashMap0.put("f,m,f,ls,h", "姑曾外祖父");
            this.FamilyHashMap0.put("f,m,f,os,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,f,ls,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,f,os,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,f,ls,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,m", "曾外祖母");
            this.FamilyHashMap0.put("f,m,m,f", "曾外曾外祖父");
            this.FamilyHashMap0.put("f,m,m,m", "曾外曾外祖母");
            this.FamilyHashMap0.put("f,m,m,ob", "舅曾外祖父");
            this.FamilyHashMap0.put("f,m,m,lb", "舅曾外祖父");
            this.FamilyHashMap0.put("f,m,m,ob,w", "舅曾外祖母");
            this.FamilyHashMap0.put("f,m,m,lb,w", "舅曾外祖母");
            this.FamilyHashMap0.put("f,m,m,ob,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,m,lb,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,m,ob,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,m,lb,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,m,ob,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,lb,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,ob,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,m,lb,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,m,os", "姨曾外祖母");
            this.FamilyHashMap0.put("f,m,m,ls", "姨曾外祖母");
            this.FamilyHashMap0.put("f,m,m,os,h", "姨曾外祖父");
            this.FamilyHashMap0.put("f,m,m,ls,h", "姨曾外祖父");
            this.FamilyHashMap0.put("f,m,m,os,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,ls,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,os,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,m,ls,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,m,os,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,m,ls,s", "表舅祖父");
            this.FamilyHashMap0.put("f,m,m,os,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,m,ls,s,w", "表舅祖母");
            this.FamilyHashMap0.put("f,m,m,os,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,ls,d", "表姨祖母");
            this.FamilyHashMap0.put("f,m,m,os,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,m,ls,d,h", "表姨祖父");
            this.FamilyHashMap0.put("f,m,ob", "舅公");
            this.FamilyHashMap0.put("f,m,ob,w", "舅婆");
            this.FamilyHashMap0.put("f,m,ob,s", "舅表伯父/舅表叔父");
            this.FamilyHashMap0.put("f,m,ob,s,w", "舅表伯母/舅表叔母");
            this.FamilyHashMap0.put("f,m,lb,s", "舅表伯父/舅表叔父");
            this.FamilyHashMap0.put("f,m,lb,s,w", "舅表伯母/舅表叔母");
            this.FamilyHashMap0.put("f,m,ob,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,ob,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,ob,d", "舅表姑母");
            this.FamilyHashMap0.put("f,m,ob,d,h", "舅表姑父");
            this.FamilyHashMap0.put("f,m,ob,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,ob,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,os", "姨奶奶");
            this.FamilyHashMap0.put("f,m,os,h", "姨爷爷");
            this.FamilyHashMap0.put("f,m,os,s", "姨表伯父/姨表叔父");
            this.FamilyHashMap0.put("f,m,os,s,w", "姨表伯母/姨表叔母");
            this.FamilyHashMap0.put("f,m,ls,s", "姨表伯父/姨表叔父");
            this.FamilyHashMap0.put("f,m,ls,,w", "姨表伯母/姨表叔母");
            this.FamilyHashMap0.put("f,m,os,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,os,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,os,d", "姨表姑母");
            this.FamilyHashMap0.put("f,m,os,d,h", "姨表姑父");
            this.FamilyHashMap0.put("f,m,os,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,os,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,lb", "舅公");
            this.FamilyHashMap0.put("f,m,lb,w", "舅婆");
            this.FamilyHashMap0.put("f,m,lb,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,lb,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,lb,d", "舅表姑母");
            this.FamilyHashMap0.put("f,m,lb,d,h", "舅表姑父");
            this.FamilyHashMap0.put("f,m,lb,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,lb,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,ls", "姨奶奶");
            this.FamilyHashMap0.put("f,m,ls,h", "姨爷爷");
            this.FamilyHashMap0.put("f,m,ls,s,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,ls,s,d", "从表姐妹");
            this.FamilyHashMap0.put("f,m,ls,d", "姨表姑母");
            this.FamilyHashMap0.put("f,m,ls,d,h", "姨表姑父");
            this.FamilyHashMap0.put("f,m,ls,d,s", "从表兄弟");
            this.FamilyHashMap0.put("f,m,ls,d,d", "从表姐妹");
            this.FamilyHashMap0.put("f,ob,w,f", "姻伯公");
            this.FamilyHashMap0.put("f,ob,w,m", "姻伯婆");
            this.FamilyHashMap0.put("f,ob,w,ob", "姻世伯");
            this.FamilyHashMap0.put("f,ob,w,ob,w", "姻伯母");
            this.FamilyHashMap0.put("f,ob,w,os", "姻伯母");
            this.FamilyHashMap0.put("f,ob,w,os,h", "姻世伯");
            this.FamilyHashMap0.put("f,ob,w,lb", "姻世伯");
            this.FamilyHashMap0.put("f,ob,w,lb,w", "姻伯母");
            this.FamilyHashMap0.put("f,ob,w,ls", "姻伯母");
            this.FamilyHashMap0.put("f,ob,w,ls,h", "姻世伯");
            this.FamilyHashMap0.put("f,os,s", "姑表哥/姑表弟");
            this.FamilyHashMap0.put("f,os,s,w", "姑表嫂/姑表弟媳");
            this.FamilyHashMap0.put("f,ls,s", "姑表哥/姑表弟");
            this.FamilyHashMap0.put("f,ls,s,w", "姑表嫂/姑表弟媳");
            this.FamilyHashMap0.put("f,ob,s,s", "堂侄");
            this.FamilyHashMap0.put("f,ob,s,s,w", "堂侄媳妇");
            this.FamilyHashMap0.put("f,ob,s,s,s", "堂侄孙");
            this.FamilyHashMap0.put("f,ob,s,s,s,w", "堂侄孙媳妇");
            this.FamilyHashMap0.put("f,ob,s,s,d", "堂侄孙女");
            this.FamilyHashMap0.put("f,ob,s,s,d,h", "堂侄孙女婿");
            this.FamilyHashMap0.put("f,ob,s,d", "堂侄女");
            this.FamilyHashMap0.put("f,ob,s,d,h", "堂侄女婿");
            this.FamilyHashMap0.put("f,ob,d,s", "堂外甥");
            this.FamilyHashMap0.put("f,ob,d,d", "堂外甥女");
            this.FamilyHashMap0.put("f,lb,w,f", "姻伯公");
            this.FamilyHashMap0.put("f,lb,w,m", "姻伯婆");
            this.FamilyHashMap0.put("f,lb,w,ob", "姻世伯");
            this.FamilyHashMap0.put("f,lb,w,ob,w", "姻伯母");
            this.FamilyHashMap0.put("f,lb,w,os", "姻伯母");
            this.FamilyHashMap0.put("f,lb,w,os,h", "姻世伯");
            this.FamilyHashMap0.put("f,lb,w,lb", "姻世伯");
            this.FamilyHashMap0.put("f,lb,w,lb,w", "姻伯母");
            this.FamilyHashMap0.put("f,lb,w,ls", "姻伯母");
            this.FamilyHashMap0.put("f,lb,w,ls,h", "姻世伯");
            this.FamilyHashMap0.put("f,lb,s,s", "堂侄");
            this.FamilyHashMap0.put("f,lb,s,s,w", "堂侄媳妇");
            this.FamilyHashMap0.put("f,lb,s,s,s", "堂侄孙");
            this.FamilyHashMap0.put("f,lb,s,s,s,w", "堂侄孙媳妇");
            this.FamilyHashMap0.put("f,lb,s,s,d", "堂侄孙女");
            this.FamilyHashMap0.put("f,lb,s,s,d,h", "堂侄孙女婿");
            this.FamilyHashMap0.put("f,lb,s,d", "堂侄女");
            this.FamilyHashMap0.put("f,lb,s,d,h", "堂侄女婿");
            this.FamilyHashMap0.put("f,lb,d", "堂姐/堂妹");
            this.FamilyHashMap0.put("f,lb,s", "堂兄/堂弟");
            this.FamilyHashMap0.put("f,lb,d,s", "堂外甥");
            this.FamilyHashMap0.put("f,lb,d,d", "堂外甥女");
            this.FamilyHashMap0.put("f,ob", "伯父");
            this.FamilyHashMap0.put("f,ob,w", "伯母");
            this.FamilyHashMap0.put("f,ob,d", "堂姐/堂妹");
            this.FamilyHashMap0.put("f,ob,s", "堂兄/堂弟");
            this.FamilyHashMap0.put("f,lb", "叔叔");
            this.FamilyHashMap0.put("f,lb,w", "婶婶");
            this.FamilyHashMap0.put("f,os", "姑妈");
            this.FamilyHashMap0.put("f,os,h", "姑丈");
            this.FamilyHashMap0.put("f,os,h,f", "姻伯公");
            this.FamilyHashMap0.put("f,os,h,m", "姻伯婆");
            this.FamilyHashMap0.put("f,os,h,ob", "姻世伯");
            this.FamilyHashMap0.put("f,os,h,ob,w", "姻伯母");
            this.FamilyHashMap0.put("f,os,h,os", "姻伯母");
            this.FamilyHashMap0.put("f,os,h,os,h", "姻世伯");
            this.FamilyHashMap0.put("f,os,h,lb", "姻世伯");
            this.FamilyHashMap0.put("f,os,h,lb,w", "姻伯母");
            this.FamilyHashMap0.put("f,os,h,ls", "姻伯母");
            this.FamilyHashMap0.put("f,os,h,ls,h", "姻世伯");
            this.FamilyHashMap0.put("f,os,s,s", "表侄");
            this.FamilyHashMap0.put("f,os,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("f,os,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("f,os,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("f,os,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("f,os,s,d", "表侄女");
            this.FamilyHashMap0.put("f,os,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("f,os,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("f,os,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("f,os,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("f,os,d", "姑表姐/姑表妹");
            this.FamilyHashMap0.put("f,os,d,h", "姑表姐夫/姑表妹夫");
            this.FamilyHashMap0.put("f,ls,d", "姑表姐/姑表妹");
            this.FamilyHashMap0.put("f,ls,d,h", "姑表姐夫/姑表妹夫");
            this.FamilyHashMap0.put("f,os,d,s", "表外甥");
            this.FamilyHashMap0.put("f,os,d,d", "表外甥女");
            this.FamilyHashMap0.put("f,ls", "姑妈");
            this.FamilyHashMap0.put("f,ls,h", "姑丈");
            this.FamilyHashMap0.put("f,ls,h,f", "姻伯公");
            this.FamilyHashMap0.put("f,ls,h,m", "姻伯婆");
            this.FamilyHashMap0.put("f,ls,h,ob", "姻世伯");
            this.FamilyHashMap0.put("f,ls,h,ob,w", "姻伯母");
            this.FamilyHashMap0.put("f,ls,h,os", "姻伯母");
            this.FamilyHashMap0.put("f,ls,h,os,h", "姻世伯");
            this.FamilyHashMap0.put("f,ls,h,lb", "姻世伯");
            this.FamilyHashMap0.put("f,ls,h,lb,w", "姻伯母");
            this.FamilyHashMap0.put("f,ls,h,ls", "姻伯母");
            this.FamilyHashMap0.put("f,ls,h,ls,h", "姻世伯");
            this.FamilyHashMap0.put("f,ls,s,s", "表侄");
            this.FamilyHashMap0.put("f,ls,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("f,ls,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("f,ls,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("f,ls,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("f,ls,s,d", "表侄女");
            this.FamilyHashMap0.put("f,ls,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("f,ls,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("f,ls,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("f,ls,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("f,ls,d,s", "表外甥");
            this.FamilyHashMap0.put("f,ls,d,d", "表外甥女");
            this.FamilyHashMap0.put("f,os", "姑妈");
            this.FamilyHashMap0.put("f,ls", "姑妈");
            this.FamilyHashMap0.put("m", "母亲");
            this.FamilyHashMap0.put("m,f", "外公");
            this.FamilyHashMap0.put("m,f,f", "外曾祖父");
            this.FamilyHashMap0.put("m,f,f,f", "外高祖父");
            this.FamilyHashMap0.put("m,f,f,m", "外高祖母");
            this.FamilyHashMap0.put("m,f,f,ob,s", "堂伯外祖父/堂叔外祖父");
            this.FamilyHashMap0.put("m,f,f,ob,s,w", "堂伯外祖母/堂叔外祖母");
            this.FamilyHashMap0.put("m,f,f,lb,s", "堂伯外祖父/堂叔外祖父");
            this.FamilyHashMap0.put("m,f,f,lb,s,w", "堂伯外祖母/堂叔外祖母");
            this.FamilyHashMap0.put("m,f,f,ob,d", "堂姑外祖母");
            this.FamilyHashMap0.put("m,f,f,ob,d,h", "堂姑外祖父");
            this.FamilyHashMap0.put("m,f,f,lb,d", "堂姑外祖母");
            this.FamilyHashMap0.put("m,f,f,lb,d,h", "堂姑外祖父");
            this.FamilyHashMap0.put("m,f,f,ob", "伯外曾祖父");
            this.FamilyHashMap0.put("m,f,f,ob,w", "伯外曾祖母");
            this.FamilyHashMap0.put("m,f,f,lb", "叔外曾祖父");
            this.FamilyHashMap0.put("m,f,f,lb,w", "叔外曾祖母");
            this.FamilyHashMap0.put("m,f,f,os", "姑外曾祖母");
            this.FamilyHashMap0.put("m,f,f,os,h", "姑外曾祖父");
            this.FamilyHashMap0.put("m,f,f,os,s", "表伯外祖父/表叔外祖父");
            this.FamilyHashMap0.put("m,f,f,os,s,w", "表伯外祖母/表叔外祖母");
            this.FamilyHashMap0.put("m,f,f,ls,s", "表伯外祖父/表叔外祖父");
            this.FamilyHashMap0.put("m,f,f,ls,s,w", "表伯外祖母/表叔外祖母");
            this.FamilyHashMap0.put("m,f,f,os,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,f,os,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,f,ls", "姑外曾祖母");
            this.FamilyHashMap0.put("m,f,f,ls,h", "姑外曾祖父");
            this.FamilyHashMap0.put("m,f,f,ls,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,f,ls,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,m", "外曾祖母");
            this.FamilyHashMap0.put("m,f,m,f", "外高外祖父");
            this.FamilyHashMap0.put("m,f,m,m", "外高外祖母");
            this.FamilyHashMap0.put("m,f,m,ob", "舅外曾祖父");
            this.FamilyHashMap0.put("m,f,m,ob,w", "舅外曾祖母");
            this.FamilyHashMap0.put("m,f,m,ob,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,m,ob,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,m,os", "姨外曾祖母");
            this.FamilyHashMap0.put("m,f,m,os,h", "姨外曾祖父");
            this.FamilyHashMap0.put("m,f,m,os,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,m,os,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,ob", "大姥爷/小姥爷");
            this.FamilyHashMap0.put("m,f,ob,s", "堂舅");
            this.FamilyHashMap0.put("m,f,ob,s,w", "堂舅妈");
            this.FamilyHashMap0.put("m,f,ob,s,s", "堂舅表兄/堂舅表弟");
            this.FamilyHashMap0.put("m,f,lb,s,s", "堂舅表兄/堂舅表弟");
            this.FamilyHashMap0.put("m,f,ob,s,d", "堂舅表姐/堂舅表妹");
            this.FamilyHashMap0.put("m,f,lb,s,d", "堂舅表姐/堂舅表妹");
            this.FamilyHashMap0.put("m,f,ob,d", "堂姨");
            this.FamilyHashMap0.put("m,f,ob,d,h", "堂姨丈");
            this.FamilyHashMap0.put("m,f,ob,d,s", "堂姨表兄/堂姨表弟");
            this.FamilyHashMap0.put("m,f,ob,d,d", "堂姨表姐/堂姨表妹");
            this.FamilyHashMap0.put("m,f,lb,d,s", "堂姨表兄/堂姨表弟");
            this.FamilyHashMap0.put("m,f,lb,d,d", "堂姨表姐/堂姨表妹");
            this.FamilyHashMap0.put("m,f,m,lb", "舅外曾祖父");
            this.FamilyHashMap0.put("m,f,m,lb,w", "舅外曾祖母");
            this.FamilyHashMap0.put("m,f,m,lb,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,m,lb,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,m,ls", "姨外曾祖母");
            this.FamilyHashMap0.put("m,f,m,ls,h", "姨外曾祖父");
            this.FamilyHashMap0.put("m,f,m,ls,d", "表姑外祖母");
            this.FamilyHashMap0.put("m,f,m,ls,d,h", "表姑外祖父");
            this.FamilyHashMap0.put("m,f,lb", "大姥爷/小姥爷");
            this.FamilyHashMap0.put("m,f,lb,s", "堂舅");
            this.FamilyHashMap0.put("m,f,lb,s,w", "堂舅妈");
            this.FamilyHashMap0.put("m,f,lb,d", "堂姨");
            this.FamilyHashMap0.put("m,f,lb,d,h", "堂姨丈");
            this.FamilyHashMap0.put("m,f,ob", "伯外祖父");
            this.FamilyHashMap0.put("m,f,ob,w", "伯外祖母");
            this.FamilyHashMap0.put("m,f,lb", "叔外祖父");
            this.FamilyHashMap0.put("m,f,lb,w", "叔外祖母");
            this.FamilyHashMap0.put("m,f,os", "姑姥姥");
            this.FamilyHashMap0.put("m,f,os,h", "姑姥爷");
            this.FamilyHashMap0.put("m,f,os,s", "姑表舅父");
            this.FamilyHashMap0.put("m,f,os,s,w", "姑表舅母");
            this.FamilyHashMap0.put("m,f,os,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,f,os,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,f,os,d", "姑表姨母");
            this.FamilyHashMap0.put("m,f,os,d,h", "姑表姨父");
            this.FamilyHashMap0.put("m,f,os,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,f,os,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,f,ls", "姑姥姥");
            this.FamilyHashMap0.put("m,f,ls,h", "姑姥爷");
            this.FamilyHashMap0.put("m,f,ls,s", "姑表舅父");
            this.FamilyHashMap0.put("m,f,ls,s,w", "姑表舅母");
            this.FamilyHashMap0.put("m,f,ls,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,f,ls,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,f,ls,d", "姑表姨母");
            this.FamilyHashMap0.put("m,f,ls,d,h", "姑表姨父");
            this.FamilyHashMap0.put("m,f,ls,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,f,ls,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m", "外婆");
            this.FamilyHashMap0.put("m,m,f", "外曾外祖父");
            this.FamilyHashMap0.put("m,m,f,f", "外曾外曾祖父");
            this.FamilyHashMap0.put("m,m,f,m", "外曾外曾祖母");
            this.FamilyHashMap0.put("m,m,f,ob,s", "堂舅外祖父");
            this.FamilyHashMap0.put("m,m,f,ob,s,w", "堂舅外祖母");
            this.FamilyHashMap0.put("m,m,f,ob,d", "堂姨外祖母");
            this.FamilyHashMap0.put("m,m,f,ob,d,h", "堂姨外祖父");
            this.FamilyHashMap0.put("m,m,f,lb,s", "堂舅外祖父");
            this.FamilyHashMap0.put("m,m,f,lb,s,w", "堂舅外祖母");
            this.FamilyHashMap0.put("m,m,f,lb,d", "堂姨外祖母");
            this.FamilyHashMap0.put("m,m,f,lb,d,h", "堂姨外祖父");
            this.FamilyHashMap0.put("m,m,f,ob", "伯外曾外祖父");
            this.FamilyHashMap0.put("m,m,f,ob,w", "伯外曾外祖母");
            this.FamilyHashMap0.put("m,m,f,lb", "叔外曾外祖父");
            this.FamilyHashMap0.put("m,m,f,lb,w", "叔外曾外祖母");
            this.FamilyHashMap0.put("m,m,f,os", "姑外曾外祖母");
            this.FamilyHashMap0.put("m,m,f,os,h", "姑外曾外祖父");
            this.FamilyHashMap0.put("m,m,f,os,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,f,os,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,f,os,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,f,os,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,f,ls", "姑外曾外祖母");
            this.FamilyHashMap0.put("m,m,f,ls,h", "姑外曾外祖父");
            this.FamilyHashMap0.put("m,m,f,ls,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,f,ls,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,f,ls,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,f,ls,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,m", "外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,f", "外曾外曾外祖父");
            this.FamilyHashMap0.put("m,m,m,m", "外曾外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,ob", "舅外曾外祖父");
            this.FamilyHashMap0.put("m,m,m,ob,w", "舅外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,ob,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,m,ob,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,m,ob,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,m,ob,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,m,os", "姨外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,os,h", "姨外曾外祖父");
            this.FamilyHashMap0.put("m,m,m,os,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,m,os,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,m,os,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,m,os,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,ob", "外舅公");
            this.FamilyHashMap0.put("m,m,ob,w", "外舅婆");
            this.FamilyHashMap0.put("m,m,ob,s", "舅表舅父");
            this.FamilyHashMap0.put("m,m,ob,s,w", "舅表舅母");
            this.FamilyHashMap0.put("m,m,ob,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,ob,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,ob,d", "舅表姨母");
            this.FamilyHashMap0.put("m,m,ob,d,h", "舅表姨父");
            this.FamilyHashMap0.put("m,m,ob,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,ob,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,os", "姨姥姥");
            this.FamilyHashMap0.put("m,m,os,h", "姨姥爷");
            this.FamilyHashMap0.put("m,m,os,s", "姨表舅父");
            this.FamilyHashMap0.put("m,m,os,s,w", "姨表舅母");
            this.FamilyHashMap0.put("m,m,os,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,os,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,os,d", "姨表姨母");
            this.FamilyHashMap0.put("m,m,os,d,h", "姨表姨父");
            this.FamilyHashMap0.put("m,m,os,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,os,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,ob", "舅舅");
            this.FamilyHashMap0.put("m,ob,w", "舅妈");
            this.FamilyHashMap0.put("m,ob,w,f", "姻伯公");
            this.FamilyHashMap0.put("m,ob,w,m", "姻伯婆");
            this.FamilyHashMap0.put("m,ob,w,ob", "姻世伯");
            this.FamilyHashMap0.put("m,ob,w,ob,w", "姻伯母");
            this.FamilyHashMap0.put("m,ob,w,os", "姻伯母");
            this.FamilyHashMap0.put("m,ob,w,os,h", "姻世伯");
            this.FamilyHashMap0.put("m,ob,w,lb", "姻世伯");
            this.FamilyHashMap0.put("m,ob,w,lb,w", "姻伯母");
            this.FamilyHashMap0.put("m,ob,w,ls", "姻伯母");
            this.FamilyHashMap0.put("m,ob,w,ls,h", "姻世伯");
            this.FamilyHashMap0.put("m,ob,s", "舅表哥/舅表弟");
            this.FamilyHashMap0.put("m,ob,s,w", "舅表嫂/舅表弟媳");
            this.FamilyHashMap0.put("m,lb,s", "舅表哥/舅表弟");
            this.FamilyHashMap0.put("m,lb,s,w", "舅表嫂/舅表弟媳");
            this.FamilyHashMap0.put("m,ob,s,s", "表侄");
            this.FamilyHashMap0.put("m,ob,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("m,ob,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("m,ob,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("m,ob,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("m,ob,s,d", "表侄女");
            this.FamilyHashMap0.put("m,ob,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("m,ob,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("m,ob,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("m,ob,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("m,ob,d,s", "表外甥");
            this.FamilyHashMap0.put("m,ob,d,d", "表外甥女");
            this.FamilyHashMap0.put("m,m,m,lb", "舅外曾外祖父");
            this.FamilyHashMap0.put("m,m,m,lb,w", "舅外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,lb,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,m,lb,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,m,lb,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,m,lb,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,m,ls", "姨外曾外祖母");
            this.FamilyHashMap0.put("m,m,m,ls,h", "姨外曾外祖父");
            this.FamilyHashMap0.put("m,m,m,ls,s", "表舅外祖父");
            this.FamilyHashMap0.put("m,m,m,ls,s,w", "表舅外祖母");
            this.FamilyHashMap0.put("m,m,m,ls,d", "表姨外祖母");
            this.FamilyHashMap0.put("m,m,m,ls,d,h", "表姨外祖父");
            this.FamilyHashMap0.put("m,m,lb", "外舅公");
            this.FamilyHashMap0.put("m,m,lb,w", "外舅婆");
            this.FamilyHashMap0.put("m,m,lb,s", "舅表舅父");
            this.FamilyHashMap0.put("m,m,lb,s,w", "舅表舅母");
            this.FamilyHashMap0.put("m,m,lb,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,lb,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,lb,d", "舅表姨母");
            this.FamilyHashMap0.put("m,m,lb,d,h", "舅表姨父");
            this.FamilyHashMap0.put("m,m,lb,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,lb,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,ls", "姨姥姥");
            this.FamilyHashMap0.put("m,m,ls,h", "姨姥爷");
            this.FamilyHashMap0.put("m,m,ls,s", "姨表舅父");
            this.FamilyHashMap0.put("m,m,ls,s,w", "姨表舅母");
            this.FamilyHashMap0.put("m,m,ls,s,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,ls,s,d", "从表姐妹");
            this.FamilyHashMap0.put("m,m,ls,d", "姨表姨母");
            this.FamilyHashMap0.put("m,m,ls,d,h", "姨表姨父");
            this.FamilyHashMap0.put("m,m,ls,d,s", "从表兄弟");
            this.FamilyHashMap0.put("m,m,ls,d,d", "从表姐妹");
            this.FamilyHashMap0.put("m,lb", "舅舅");
            this.FamilyHashMap0.put("m,lb,w", "舅妈");
            this.FamilyHashMap0.put("m,lb,w,f", "姻伯公");
            this.FamilyHashMap0.put("m,lb,w,m", "姻伯婆");
            this.FamilyHashMap0.put("m,lb,w,ob", "姻世伯");
            this.FamilyHashMap0.put("m,lb,w,ob,w", "姻伯母");
            this.FamilyHashMap0.put("m,lb,w,os", "姻伯母");
            this.FamilyHashMap0.put("m,lb,w,os,h", "姻世伯");
            this.FamilyHashMap0.put("m,lb,w,lb", "姻世伯");
            this.FamilyHashMap0.put("m,lb,w,lb,w", "姻伯母");
            this.FamilyHashMap0.put("m,lb,w,ls", "姻伯母");
            this.FamilyHashMap0.put("m,lb,w,ls,h", "姻世伯");
            this.FamilyHashMap0.put("m,lb,s,s", "表侄");
            this.FamilyHashMap0.put("m,lb,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("m,lb,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("m,lb,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("m,lb,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("m,lb,s,d", "表侄女");
            this.FamilyHashMap0.put("m,lb,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("m,lb,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("m,lb,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("m,lb,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("m,ob,d", "舅表姐/舅表妹");
            this.FamilyHashMap0.put("m,ob,d,h", "舅表姐夫/舅表妹夫");
            this.FamilyHashMap0.put("m,lb,d", "舅表姐/舅表妹");
            this.FamilyHashMap0.put("m,lb,d,h", "舅表姐夫/舅表妹夫");
            this.FamilyHashMap0.put("m,lb,d,s", "表外甥");
            this.FamilyHashMap0.put("m,lb,d,d", "表外甥女");
            this.FamilyHashMap0.put("m,ob", "大舅");
            this.FamilyHashMap0.put("m,ob,w", "大舅妈");
            this.FamilyHashMap0.put("m,lb", "小舅");
            this.FamilyHashMap0.put("m,lb,w", "小舅妈");
            this.FamilyHashMap0.put("m,os", "姨妈");
            this.FamilyHashMap0.put("m,os,h", "姨丈");
            this.FamilyHashMap0.put("m,os,h,f", "姻伯公");
            this.FamilyHashMap0.put("m,os,h,m", "姻伯婆");
            this.FamilyHashMap0.put("m,os,h,ob", "姻世伯");
            this.FamilyHashMap0.put("m,os,h,ob,w", "姻伯母");
            this.FamilyHashMap0.put("m,os,h,os", "姻伯母");
            this.FamilyHashMap0.put("m,os,h,os,h", "姻世伯");
            this.FamilyHashMap0.put("m,os,h,lb", "姻世伯");
            this.FamilyHashMap0.put("m,os,h,lb,w", "姻伯母");
            this.FamilyHashMap0.put("m,os,h,ls", "姻伯母");
            this.FamilyHashMap0.put("m,os,h,ls,h", "姻世伯");
            this.FamilyHashMap0.put("m,os,s", "姨表哥/姨表弟");
            this.FamilyHashMap0.put("m,os,s,w", "姨表嫂/姨表弟媳");
            this.FamilyHashMap0.put("m,ls,s", "姨表哥/姨表弟");
            this.FamilyHashMap0.put("m,ls,s,w", "姨表嫂/姨表弟媳");
            this.FamilyHashMap0.put("m,os,s,s", "表侄");
            this.FamilyHashMap0.put("m,os,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("m,os,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("m,os,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("m,os,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("m,os,s,d", "表侄女");
            this.FamilyHashMap0.put("m,os,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("m,os,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("m,os,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("m,os,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("m,os,d,s", "表外甥");
            this.FamilyHashMap0.put("m,os,d,d", "表外甥女");
            this.FamilyHashMap0.put("m,ls", "姨妈");
            this.FamilyHashMap0.put("m,ls,h", "姨丈");
            this.FamilyHashMap0.put("m,ls,h,f", "姻伯公");
            this.FamilyHashMap0.put("m,ls,h,m", "姻伯婆");
            this.FamilyHashMap0.put("m,ls,h,ob", "姻世伯");
            this.FamilyHashMap0.put("m,ls,h,ob,w", "姻伯母");
            this.FamilyHashMap0.put("m,ls,h,os", "姻伯母");
            this.FamilyHashMap0.put("m,ls,h,os,h", "姻世伯");
            this.FamilyHashMap0.put("m,ls,h,lb", "姻世伯");
            this.FamilyHashMap0.put("m,ls,h,lb,w", "姻伯母");
            this.FamilyHashMap0.put("m,ls,h,ls", "姻伯母");
            this.FamilyHashMap0.put("m,ls,h,ls,h", "姻世伯");
            this.FamilyHashMap0.put("m,ls,s,s", "表侄");
            this.FamilyHashMap0.put("m,ls,s,s,s", "表侄孙");
            this.FamilyHashMap0.put("m,ls,s,s,s,w", "表侄孙媳妇");
            this.FamilyHashMap0.put("m,ls,s,s,d", "表侄孙女");
            this.FamilyHashMap0.put("m,ls,s,s,d,h", "表侄孙女婿");
            this.FamilyHashMap0.put("m,ls,s,d", "表侄女");
            this.FamilyHashMap0.put("m,ls,s,d,s", "外表侄孙");
            this.FamilyHashMap0.put("m,ls,s,d,s,w", "外表侄孙媳妇");
            this.FamilyHashMap0.put("m,ls,s,d,d", "外表侄孙女");
            this.FamilyHashMap0.put("m,ls,s,d,d,h", "外表侄孙女婿");
            this.FamilyHashMap0.put("m,os,d", "姨表姐/姨表妹");
            this.FamilyHashMap0.put("m,os,d,h", "姨表姐夫/姨表妹夫");
            this.FamilyHashMap0.put("m,ls,d", "姨表姐/姨表妹");
            this.FamilyHashMap0.put("m,ls,d,h", "姨表姐夫/姨表妹夫");
            this.FamilyHashMap0.put("m,ls,d,s", "表外甥");
            this.FamilyHashMap0.put("m,ls,d,d", "表外甥女");
            this.FamilyHashMap0.put("m,os", "大姨");
            this.FamilyHashMap0.put("m,os,h", "大姨父");
            this.FamilyHashMap0.put("m,ls", "小姨");
            this.FamilyHashMap0.put("m,ls,h", "小姨父");
            this.FamilyHashMap0.put("h", "丈夫");
            this.FamilyHashMap0.put("h,f", "公公");
            this.FamilyHashMap0.put("h,f,f", "祖翁");
            this.FamilyHashMap0.put("h,f,f,ob", "伯祖翁");
            this.FamilyHashMap0.put("h,f,f,ob,w", "伯祖婆");
            this.FamilyHashMap0.put("h,f,f,lb", "叔祖翁");
            this.FamilyHashMap0.put("h,f,f,lb,w", "叔祖婆");
            this.FamilyHashMap0.put("h,f,f,f", "太公翁");
            this.FamilyHashMap0.put("h,f,f,f,ob", "太伯翁");
            this.FamilyHashMap0.put("h,f,f,f,ob,w", "太姆婆");
            this.FamilyHashMap0.put("h,f,f,f,lb", "太叔翁");
            this.FamilyHashMap0.put("h,f,f,f,lb,w", "太婶婆");
            this.FamilyHashMap0.put("h,f,f,m", "太奶亲");
            this.FamilyHashMap0.put("h,f,m", "祖婆");
            this.FamilyHashMap0.put("h,f,ob", "伯翁");
            this.FamilyHashMap0.put("h,f,ob,w", "伯婆");
            this.FamilyHashMap0.put("h,f,lb", "叔公");
            this.FamilyHashMap0.put("h,f,lb,w", "叔婆");
            this.FamilyHashMap0.put("h,f,ob,s", "堂大伯/堂叔仔");
            this.FamilyHashMap0.put("h,f,ob,s,w", "堂嫂/堂小弟");
            this.FamilyHashMap0.put("h,f,lb,s", "堂大伯/堂叔仔");
            this.FamilyHashMap0.put("h,f,lb,s,w", "堂嫂/堂小弟");
            this.FamilyHashMap0.put("h,f,ob,s,s", "堂夫侄男");
            this.FamilyHashMap0.put("h,f,ob,s,d", "堂夫侄女");
            this.FamilyHashMap0.put("h,f,ob,d", "堂大姑姐/堂小姑妹");
            this.FamilyHashMap0.put("h,f,ob,d,h", "堂大姑姐夫/堂小姑妹夫");
            this.FamilyHashMap0.put("h,f,lb,d", "堂大姑姐/堂小姑妹");
            this.FamilyHashMap0.put("h,f,lb,d,h", "堂大姑姐夫/堂小姑妹夫");
            this.FamilyHashMap0.put("h,f,ob,d,s", "堂夫甥男");
            this.FamilyHashMap0.put("h,f,ob,d,d", "堂夫甥女");
            this.FamilyHashMap0.put("h,f,os", "姑婆");
            this.FamilyHashMap0.put("h,f,os,h", "姑公");
            this.FamilyHashMap0.put("h,f,os,s", "姑表大伯子/姑表小叔弟");
            this.FamilyHashMap0.put("h,f,os,s,w", "姑表大伯嫂/姑表小叔弟妇");
            this.FamilyHashMap0.put("h,f,ls,s", "姑表大伯子/姑表小叔弟");
            this.FamilyHashMap0.put("h,f,ls,s,w", "姑表大伯嫂/姑表小叔弟妇");
            this.FamilyHashMap0.put("h,f,os,s,s", "姑表夫侄男");
            this.FamilyHashMap0.put("h,f,os,s,d", "姑表夫侄女");
            this.FamilyHashMap0.put("h,f,os,d", "姑表大姑姐/姑表小姑妹");
            this.FamilyHashMap0.put("h,f,os,d,h", "姑表大姑姐夫/姑表小姑妹夫");
            this.FamilyHashMap0.put("h,f,ls,d", "姑表大姑姐/姑表小姑妹");
            this.FamilyHashMap0.put("h,f,ls,d,h", "姑表大姑姐夫/姑表小姑妹夫");
            this.FamilyHashMap0.put("h,f,os,d,s", "姑表夫甥男");
            this.FamilyHashMap0.put("h,f,os,d,d", "姑表夫甥女");
            this.FamilyHashMap0.put("h,f,lb,s,s", "堂夫侄男");
            this.FamilyHashMap0.put("h,f,lb,s,d", "堂夫侄女");
            this.FamilyHashMap0.put("h,f,lb,d,s", "堂夫甥男");
            this.FamilyHashMap0.put("h,f,lb,d,d", "堂夫甥女");
            this.FamilyHashMap0.put("h,f,ls", "姑婆");
            this.FamilyHashMap0.put("h,f,ls,h", "姑公");
            this.FamilyHashMap0.put("h,f,ls,s,s", "姑表夫侄男");
            this.FamilyHashMap0.put("h,f,ls,s,d", "姑表夫侄女");
            this.FamilyHashMap0.put("h,f,ls,d,s", "姑表夫甥男");
            this.FamilyHashMap0.put("h,f,ls,d,d", "姑表夫甥女");
            this.FamilyHashMap0.put("h,m", "婆婆");
            this.FamilyHashMap0.put("h,m,ob", "舅公");
            this.FamilyHashMap0.put("h,m,ob,w", "舅婆");
            this.FamilyHashMap0.put("h,m,ob,s", "舅表大伯子/舅表小叔弟");
            this.FamilyHashMap0.put("h,m,ob,s,w", "舅表大伯嫂/舅表小叔弟妇");
            this.FamilyHashMap0.put("h,m,lb,s", "舅表大伯子/舅表小叔弟");
            this.FamilyHashMap0.put("h,m,lb,s,w", "舅表大伯嫂/舅表小叔弟妇");
            this.FamilyHashMap0.put("h,m,ob,s,s", "舅表夫侄男");
            this.FamilyHashMap0.put("h,m,ob,s,d", "舅表夫侄女");
            this.FamilyHashMap0.put("h,m,ob,d", "舅表大姑姐/舅表小姑妹");
            this.FamilyHashMap0.put("h,m,ob,d,h", "舅表大姑姐夫/舅表小姑妹夫");
            this.FamilyHashMap0.put("h,m,lb,d", "舅表大姑姐/舅表小姑妹");
            this.FamilyHashMap0.put("h,m,lb,d,h", "舅表大姑姐夫/舅表小姑妹夫");
            this.FamilyHashMap0.put("h,m,ob,d,s", "舅表夫甥男");
            this.FamilyHashMap0.put("h,m,ob,d,d", "舅表夫甥女");
            this.FamilyHashMap0.put("h,m,os", "姨婆");
            this.FamilyHashMap0.put("h,m,os,h", "姨公");
            this.FamilyHashMap0.put("h,m,os,s", "姨表大伯子/姨表小叔弟");
            this.FamilyHashMap0.put("h,m,os,s,w", "姨表大伯嫂/姨表小叔弟妇");
            this.FamilyHashMap0.put("h,m,ls,s", "姨表大伯子/姨表小叔弟");
            this.FamilyHashMap0.put("h,m,ls,s,w", "姨表大伯嫂/姨表小叔弟妇");
            this.FamilyHashMap0.put("h,m,os,s,s", "姨表夫侄男");
            this.FamilyHashMap0.put("h,m,os,s,d", "姨表夫侄女");
            this.FamilyHashMap0.put("h,m,os,d", "姨表大姑姐/姨表小姑妹");
            this.FamilyHashMap0.put("h,m,os,d,h", "姨表大姑姐夫/姨表小姑妹夫");
            this.FamilyHashMap0.put("h,m,ls,d", "姨表大姑姐/姨表小姑妹");
            this.FamilyHashMap0.put("h,m,ls,d,h", "姨表大姑姐夫/姨表小姑妹夫");
            this.FamilyHashMap0.put("h,m,os,d,s", "姨表夫甥男");
            this.FamilyHashMap0.put("h,m,os,d,d", "姨表夫甥女");
            this.FamilyHashMap0.put("h,m,lb", "舅公");
            this.FamilyHashMap0.put("h,m,lb,w", "舅婆");
            this.FamilyHashMap0.put("h,m,lb,s,s", "舅表夫侄男");
            this.FamilyHashMap0.put("h,m,lb,s,d", "舅表夫侄女");
            this.FamilyHashMap0.put("h,m,lb,d,s", "舅表夫甥男");
            this.FamilyHashMap0.put("h,m,lb,d,d", "舅表夫甥女");
            this.FamilyHashMap0.put("h,m,ls", "姨婆");
            this.FamilyHashMap0.put("h,m,ls,h", "姨公");
            this.FamilyHashMap0.put("h,m,ls,s,s", "姨表夫侄男");
            this.FamilyHashMap0.put("h,m,ls,s,d", "姨表夫侄女");
            this.FamilyHashMap0.put("h,m,ls,d,s", "姨表夫甥男");
            this.FamilyHashMap0.put("h,m,ls,d,d", "姨表夫甥女");
            this.FamilyHashMap0.put("h,ob", "大伯子");
            this.FamilyHashMap0.put("h,ob,w", "大婶子");
            this.FamilyHashMap0.put("h,lb", "小叔子");
            this.FamilyHashMap0.put("h,lb,w", "小婶子");
            this.FamilyHashMap0.put("h,ob,s", "叔侄");
            this.FamilyHashMap0.put("h,lb,s", "叔侄");
            this.FamilyHashMap0.put("h,os", "大姑子");
            this.FamilyHashMap0.put("h,os,h", "大姑夫");
            this.FamilyHashMap0.put("h,ls", "小姑子");
            this.FamilyHashMap0.put("h,ls,h", "小姑夫");
            this.FamilyHashMap0.put("h,os,s", "姑甥");
            this.FamilyHashMap0.put("h,ls,s", "姑甥");
            this.FamilyHashMap0.put("w", "妻子");
            this.FamilyHashMap0.put("w,f", "岳父");
            this.FamilyHashMap0.put("w,f,f", "太岳父");
            this.FamilyHashMap0.put("w,f,f,ob", "太伯岳");
            this.FamilyHashMap0.put("w,f,f,ob,w", "太伯岳母");
            this.FamilyHashMap0.put("w,f,f,lb,", "太叔岳");
            this.FamilyHashMap0.put("w,f,f,lb,w", "太叔岳母");
            this.FamilyHashMap0.put("w,f,f,ob,s", "姻伯/姻叔");
            this.FamilyHashMap0.put("w,f,f,ob,s,w", "姻姆/姻婶");
            this.FamilyHashMap0.put("w,f,f,lb,s", "姻伯/姻叔");
            this.FamilyHashMap0.put("w,f,f,lb,s,w", "姻姆/姻婶");
            this.FamilyHashMap0.put("w,f,f,os", "太姑岳母");
            this.FamilyHashMap0.put("w,f,f,os,h", "太姑岳父");
            this.FamilyHashMap0.put("w,f,f,ls", "太姑岳母");
            this.FamilyHashMap0.put("w,f,f,ls,h", "太姑岳父");
            this.FamilyHashMap0.put("w,f,m", "太岳母");
            this.FamilyHashMap0.put("w,f,m,ob", "太舅岳父");
            this.FamilyHashMap0.put("w,f,m,ob,w", "太舅岳母");
            this.FamilyHashMap0.put("w,f,m,os", "太姨岳母");
            this.FamilyHashMap0.put("w,f,m,os,h", "太姨岳父");
            this.FamilyHashMap0.put("w,f,ob,s", "堂大舅/堂舅仔");
            this.FamilyHashMap0.put("w,f,ob,d", "堂大姨/堂姨仔");
            this.FamilyHashMap0.put("w,f,lb,s", "堂大舅/堂舅仔");
            this.FamilyHashMap0.put("w,f,lb,d", "堂大姨/堂姨仔");
            this.FamilyHashMap0.put("w,f,m,lb", "太舅岳父");
            this.FamilyHashMap0.put("w,f,m,lb,w", "太舅岳母");
            this.FamilyHashMap0.put("w,f,m,ls", "太姨岳母");
            this.FamilyHashMap0.put("w,f,m,ls,h", "太姨岳父");
            this.FamilyHashMap0.put("w,f,ob", "伯岳");
            this.FamilyHashMap0.put("w,f,ob,w", "伯岳母");
            this.FamilyHashMap0.put("w,f,lb", "叔岳");
            this.FamilyHashMap0.put("w,f,lb,w", "叔岳母");
            this.FamilyHashMap0.put("w,f,os", "姑岳母");
            this.FamilyHashMap0.put("w,f,os,h", "姑岳父");
            this.FamilyHashMap0.put("w,f,os,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,f,os,s,w", "表内嫂/表内弟妇");
            this.FamilyHashMap0.put("w,f,ls,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,f,ls,s,w", "表内嫂/表内弟妇");
            this.FamilyHashMap0.put("w,f,os,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,f,os,d,h", "表襟兄/表襟弟");
            this.FamilyHashMap0.put("w,f,ls,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,f,ls,d,h", "表襟兄/表襟弟");
            this.FamilyHashMap0.put("w,f,ls", "姑岳母");
            this.FamilyHashMap0.put("w,f,ls,h", "姑岳父");
            this.FamilyHashMap0.put("w,m", "岳母");
            this.FamilyHashMap0.put("w,m,f", "外太岳父");
            this.FamilyHashMap0.put("w,m,m", "外太岳母");
            this.FamilyHashMap0.put("w,m,ob", "舅岳父");
            this.FamilyHashMap0.put("w,m,ob,w", "舅岳母");
            this.FamilyHashMap0.put("w,m,ob,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,m,ob,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,m,lb,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,m,lb,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,m,os", "姨岳母");
            this.FamilyHashMap0.put("w,m,os,h", "姨岳父");
            this.FamilyHashMap0.put("w,m,os,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,m,os,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,m,ls,s", "表大舅/表舅仔");
            this.FamilyHashMap0.put("w,m,ls,d", "表大姨/表姨仔");
            this.FamilyHashMap0.put("w,ob,s", "内侄");
            this.FamilyHashMap0.put("w,ob,s,w", "内侄媳妇");
            this.FamilyHashMap0.put("w,ob,s,s", "内侄孙");
            this.FamilyHashMap0.put("w,ob,s,s,w", "内侄孙媳妇");
            this.FamilyHashMap0.put("w,ob,s,d", "内侄孙女");
            this.FamilyHashMap0.put("w,ob,s,d,h", "内侄孙女婿");
            this.FamilyHashMap0.put("w,ob,d", "内侄女");
            this.FamilyHashMap0.put("w,ob,d,h", "内侄女婿");
            this.FamilyHashMap0.put("w,ob,d,s", "外侄孙");
            this.FamilyHashMap0.put("w,ob,d,s,w", "外侄孙媳妇");
            this.FamilyHashMap0.put("w,ob,d,d", "外侄孙女");
            this.FamilyHashMap0.put("w,ob,d,d,h", "外侄孙女婿");
            this.FamilyHashMap0.put("w,m,lb", "舅岳父");
            this.FamilyHashMap0.put("w,m,lb,w", "舅岳母");
            this.FamilyHashMap0.put("w,m,ls", "姨岳母");
            this.FamilyHashMap0.put("w,m,ls,h", "姨岳父");
            this.FamilyHashMap0.put("w,lb,s", "内侄");
            this.FamilyHashMap0.put("w,lb,s,w", "内侄媳妇");
            this.FamilyHashMap0.put("w,lb,s,s", "内侄孙");
            this.FamilyHashMap0.put("w,lb,s,s,w", "内侄孙媳妇");
            this.FamilyHashMap0.put("w,lb,s,d", "内侄孙女");
            this.FamilyHashMap0.put("w,lb,s,d,h", "内侄孙女婿");
            this.FamilyHashMap0.put("w,lb,d", "内侄女");
            this.FamilyHashMap0.put("w,lb,d,h", "内侄女婿");
            this.FamilyHashMap0.put("w,lb,d,s", "外侄孙");
            this.FamilyHashMap0.put("w,lb,d,s,w", "外侄孙媳妇");
            this.FamilyHashMap0.put("w,lb,d,d", "外侄孙女");
            this.FamilyHashMap0.put("w,lb,d,d,h", "外侄孙女婿");
            this.FamilyHashMap0.put("w,ob", "大舅子");
            this.FamilyHashMap0.put("w,ob,w", "舅嫂");
            this.FamilyHashMap0.put("w,lb", "小舅子");
            this.FamilyHashMap0.put("w,lb,w", "舅弟媳");
            this.FamilyHashMap0.put("w,os,s", "内甥");
            this.FamilyHashMap0.put("w,os,s,w", "姨甥媳妇");
            this.FamilyHashMap0.put("w,os,s,s", "姨甥孙");
            this.FamilyHashMap0.put("w,os,s,s,w", "姨甥孙媳妇");
            this.FamilyHashMap0.put("w,os,s,d", "姨甥孙女");
            this.FamilyHashMap0.put("w,os,s,d,h", "姨甥孙女婿");
            this.FamilyHashMap0.put("w,os,d", "姨甥女");
            this.FamilyHashMap0.put("w,os,d,h", "姨甥女婿");
            this.FamilyHashMap0.put("w,os,d,s", "姨甥孙");
            this.FamilyHashMap0.put("w,os,d,s,w", "姨甥孙媳妇");
            this.FamilyHashMap0.put("w,os,d,d", "姨甥孙女");
            this.FamilyHashMap0.put("w,os,d,d,h", "姨甥孙女婿");
            this.FamilyHashMap0.put("w,ls,s", "内甥");
            this.FamilyHashMap0.put("w,ls,s,w", "姨甥媳妇");
            this.FamilyHashMap0.put("w,ls,s,s", "姨甥孙");
            this.FamilyHashMap0.put("w,ls,s,s,w", "姨甥孙媳妇");
            this.FamilyHashMap0.put("w,ls,s,d", "姨甥孙女");
            this.FamilyHashMap0.put("w,ls,s,d,h", "姨甥孙女婿");
            this.FamilyHashMap0.put("w,ls,d", "姨甥女");
            this.FamilyHashMap0.put("w,ls,d,h", "姨甥女婿");
            this.FamilyHashMap0.put("w,ls,d,s", "姨甥孙");
            this.FamilyHashMap0.put("w,ls,d,s,w", "姨甥孙媳妇");
            this.FamilyHashMap0.put("w,ls,d,d", "姨甥孙女");
            this.FamilyHashMap0.put("w,ls,d,d,h", "姨甥孙女婿");
            this.FamilyHashMap0.put("w,os", "大姨子");
            this.FamilyHashMap0.put("w,os,h", "大姨夫");
            this.FamilyHashMap0.put("w,ls", "小姨子");
            this.FamilyHashMap0.put("w,ls,h", "小姨夫");
            this.FamilyHashMap0.put("ob", "兄弟");
            this.FamilyHashMap0.put("ob,w,f", "姻世伯");
            this.FamilyHashMap0.put("ob,w,m", "姻伯母");
            this.FamilyHashMap0.put("ob,w,ob", "姻兄/姻弟");
            this.FamilyHashMap0.put("ob,w,lb", "姻兄/姻弟");
            this.FamilyHashMap0.put("ob,s", "侄子");
            this.FamilyHashMap0.put("ob,s,w", "侄媳");
            this.FamilyHashMap0.put("ob,s,s", "侄孙");
            this.FamilyHashMap0.put("ob,s,s,w", "侄孙媳");
            this.FamilyHashMap0.put("ob,s,s,s", "侄曾孙");
            this.FamilyHashMap0.put("ob,s,s,d", "侄曾孙女");
            this.FamilyHashMap0.put("ob,s,d", "侄孙女");
            this.FamilyHashMap0.put("ob,s,d,h", "侄孙女婿");
            this.FamilyHashMap0.put("ob,d", "侄女");
            this.FamilyHashMap0.put("ob,d,h", "侄女婿");
            this.FamilyHashMap0.put("ob,d,s", "外侄孙");
            this.FamilyHashMap0.put("ob,d,s,w", "外侄孙媳妇");
            this.FamilyHashMap0.put("ob,d,d", "外侄孙女");
            this.FamilyHashMap0.put("ob,d,d,h", "外侄孙女婿");
            this.FamilyHashMap0.put("lb", "兄弟");
            this.FamilyHashMap0.put("lb,w,f", "姻世伯");
            this.FamilyHashMap0.put("lb,w,m", "姻伯母");
            this.FamilyHashMap0.put("lb,w,ob", "姻兄/姻弟");
            this.FamilyHashMap0.put("lb,w,lb", "姻兄/姻弟");
            this.FamilyHashMap0.put("lb,s", "侄子");
            this.FamilyHashMap0.put("lb,s,w", "侄媳");
            this.FamilyHashMap0.put("lb,s,s", "侄孙");
            this.FamilyHashMap0.put("lb,s,s,w", "侄孙媳");
            this.FamilyHashMap0.put("lb,s,s,s", "侄曾孙");
            this.FamilyHashMap0.put("lb,s,s,d", "侄曾孙女");
            this.FamilyHashMap0.put("lb,s,d", "侄孙女");
            this.FamilyHashMap0.put("lb,s,d,h", "侄孙女婿");
            this.FamilyHashMap0.put("lb,d", "侄女");
            this.FamilyHashMap0.put("lb,d,h", "侄女婿");
            this.FamilyHashMap0.put("lb,d,s", "外侄孙");
            this.FamilyHashMap0.put("lb,d,s,w", "外侄孙媳妇");
            this.FamilyHashMap0.put("lb,d,d", "外侄孙女");
            this.FamilyHashMap0.put("lb,d,d,h", "外侄孙女婿");
            this.FamilyHashMap0.put("ob", "哥哥");
            this.FamilyHashMap0.put("ob,w", "嫂子");
            this.FamilyHashMap0.put("ob,w,f", "姻伯父");
            this.FamilyHashMap0.put("ob,w,m", "姻伯母");
            this.FamilyHashMap0.put("lb", "弟弟");
            this.FamilyHashMap0.put("lb,w", "弟妹");
            this.FamilyHashMap0.put("lb,w,f", "姻叔父");
            this.FamilyHashMap0.put("lb,w,m", "姻叔母");
            this.FamilyHashMap0.put("os", "姐妹");
            this.FamilyHashMap0.put("os,h,f", "姻世伯");
            this.FamilyHashMap0.put("os,h,m", "姻伯母");
            this.FamilyHashMap0.put("os,h,ob", "姻兄/姻弟");
            this.FamilyHashMap0.put("os,h,lb", "姻兄/姻弟");
            this.FamilyHashMap0.put("os,s", "外甥");
            this.FamilyHashMap0.put("os,s,w", "外甥媳妇");
            this.FamilyHashMap0.put("os,s,s", "外甥孙");
            this.FamilyHashMap0.put("os,s,s,w", "外甥孙媳妇");
            this.FamilyHashMap0.put("os,s,s,s", "外曾甥孙");
            this.FamilyHashMap0.put("os,s,s,d", "外曾甥孙女");
            this.FamilyHashMap0.put("os,s,d", "外甥孙女");
            this.FamilyHashMap0.put("os,s,d,h", "外甥孙女婿");
            this.FamilyHashMap0.put("os,s,d,s", "外曾甥孙");
            this.FamilyHashMap0.put("os,s,d,d", "外曾甥孙女");
            this.FamilyHashMap0.put("os,d", "外甥女");
            this.FamilyHashMap0.put("os,d,h", "外甥女婿");
            this.FamilyHashMap0.put("os,d,s", "外甥孙");
            this.FamilyHashMap0.put("os,d,s,w", "外甥孙媳妇");
            this.FamilyHashMap0.put("os,d,s,s", "外曾甥孙");
            this.FamilyHashMap0.put("os,d,s,d", "外曾甥孙女");
            this.FamilyHashMap0.put("os,d,d", "外甥孙女");
            this.FamilyHashMap0.put("os,d,d,h", "外甥孙女婿");
            this.FamilyHashMap0.put("os,d,d,s", "外曾甥孙");
            this.FamilyHashMap0.put("os,d,d,d", "外曾甥孙女");
            this.FamilyHashMap0.put("ls", "姐妹");
            this.FamilyHashMap0.put("ls,h,f", "姻世伯");
            this.FamilyHashMap0.put("ls,h,m", "姻伯母");
            this.FamilyHashMap0.put("ls,h,ob", "姻兄/姻弟");
            this.FamilyHashMap0.put("ls,h,lb", "姻兄/姻弟");
            this.FamilyHashMap0.put("ls,s", "外甥");
            this.FamilyHashMap0.put("ls,s,w", "外甥媳妇");
            this.FamilyHashMap0.put("ls,s,s", "外甥孙");
            this.FamilyHashMap0.put("ls,s,s,w", "外甥孙媳妇");
            this.FamilyHashMap0.put("ls,s,s,s", "外曾甥孙");
            this.FamilyHashMap0.put("ls,s,s,d", "外曾甥孙女");
            this.FamilyHashMap0.put("ls,s,d", "外甥孙女");
            this.FamilyHashMap0.put("ls,s,d,h", "外甥孙女婿");
            this.FamilyHashMap0.put("ls,s,d,s", "外曾甥孙");
            this.FamilyHashMap0.put("ls,s,d,d", "外曾甥孙女");
            this.FamilyHashMap0.put("ls,d", "外甥女");
            this.FamilyHashMap0.put("ls,d,h", "外甥女婿");
            this.FamilyHashMap0.put("ls,d,s", "外甥孙");
            this.FamilyHashMap0.put("ls,d,s,w", "外甥孙媳妇");
            this.FamilyHashMap0.put("ls,d,s,s", "外曾甥孙");
            this.FamilyHashMap0.put("ls,d,s,d", "外曾甥孙女");
            this.FamilyHashMap0.put("ls,d,d", "外甥孙女");
            this.FamilyHashMap0.put("ls,d,d,h", "外甥孙女婿");
            this.FamilyHashMap0.put("ls,d,d,s", "外曾甥孙");
            this.FamilyHashMap0.put("ls,d,d,d", "外曾甥孙女");
            this.FamilyHashMap0.put("os", "姐姐");
            this.FamilyHashMap0.put("os,h", "姐夫");
            this.FamilyHashMap0.put("ls", "妹妹");
            this.FamilyHashMap0.put("ls,h", "妹夫");
            this.FamilyHashMap0.put("s", "儿子");
            this.FamilyHashMap0.put("s,w", "儿媳妇");
            this.FamilyHashMap0.put("s,w,ob", "姻侄");
            this.FamilyHashMap0.put("s,w,ob,s", "姻侄孙");
            this.FamilyHashMap0.put("s,w,ob,d", "姻侄孙女");
            this.FamilyHashMap0.put("s,w,os", "姻侄女");
            this.FamilyHashMap0.put("s,w,os,s", "姻侄孙");
            this.FamilyHashMap0.put("s,w,os,d", "姻侄孙女");
            this.FamilyHashMap0.put("s,w,lb", "姻侄");
            this.FamilyHashMap0.put("s,w,lb,s", "姻侄孙");
            this.FamilyHashMap0.put("s,w,lb,d", "姻侄孙女");
            this.FamilyHashMap0.put("s,w,ls", "姻侄女");
            this.FamilyHashMap0.put("s,w,ls,s", "姻侄孙");
            this.FamilyHashMap0.put("s,w,ls,d", "姻侄孙女");
            this.FamilyHashMap0.put("s,s", "孙子");
            this.FamilyHashMap0.put("s,s,w", "孙媳妇");
            this.FamilyHashMap0.put("s,s,s", "曾孙");
            this.FamilyHashMap0.put("s,s,s,w", "曾孙媳妇");
            this.FamilyHashMap0.put("s,s,s,s", "玄孙");
            this.FamilyHashMap0.put("s,s,s,d", "玄孙女");
            this.FamilyHashMap0.put("s,s,s,s,s", "来孙");
            this.FamilyHashMap0.put("s,s,s,s,d", "来孙女");
            this.FamilyHashMap0.put("s,s,s,s,s,s", "晜孙");
            this.FamilyHashMap0.put("s,s,s,s,s,d", "晜孙女");
            this.FamilyHashMap0.put("s,s,s,s,s,s,s", "仍孙");
            this.FamilyHashMap0.put("s,s,s,s,s,s,d", "仍孙女");
            this.FamilyHashMap0.put("s,s,d", "曾孙女");
            this.FamilyHashMap0.put("s,s,d,h", "曾孙女婿");
            this.FamilyHashMap0.put("s,s,d,s", "外玄孙");
            this.FamilyHashMap0.put("s,s,d,d", "外玄孙女");
            this.FamilyHashMap0.put("s,d", "孙女");
            this.FamilyHashMap0.put("s,d,h", "孙女婿");
            this.FamilyHashMap0.put("s,d,s", "曾外孙");
            this.FamilyHashMap0.put("s,d,d", "曾外孙女");
            this.FamilyHashMap0.put("d", "女儿");
            this.FamilyHashMap0.put("d,h", "女婿");
            this.FamilyHashMap0.put("d,h,ob", "姻侄");
            this.FamilyHashMap0.put("d,h,ob,s", "姻侄孙");
            this.FamilyHashMap0.put("d,h,ob,d", "姻侄孙女");
            this.FamilyHashMap0.put("d,h,os", "姻侄女");
            this.FamilyHashMap0.put("d,h,os,s", "姻侄孙");
            this.FamilyHashMap0.put("d,h,os,d", "姻侄孙女");
            this.FamilyHashMap0.put("d,h,lb", "姻侄");
            this.FamilyHashMap0.put("d,h,lb,s", "姻侄孙");
            this.FamilyHashMap0.put("d,h,lb,d", "姻侄孙女");
            this.FamilyHashMap0.put("d,h,ls", "姻侄女");
            this.FamilyHashMap0.put("d,h,ls,s", "姻侄孙");
            this.FamilyHashMap0.put("d,h,ls,d", "姻侄孙女");
            this.FamilyHashMap0.put("d,s", "外孙");
            this.FamilyHashMap0.put("d,s,w", "外孙媳");
            this.FamilyHashMap0.put("d,s,s", "外曾孙");
            this.FamilyHashMap0.put("d,s,d", "外曾孙女");
            this.FamilyHashMap0.put("d,d", "外孙女");
            this.FamilyHashMap0.put("d,d,h", "外孙女婿");
            this.FamilyHashMap0.put("d,d,s", "外曾外孙");
            this.FamilyHashMap0.put("d,d,d", "外曾外孙女");
            this.FamilyHashMap0.put("s,w,m", "亲家母");
            this.FamilyHashMap0.put("s,w,f", "亲家公");
            this.FamilyHashMap0.put("s,w,f,f", "太姻翁");
            this.FamilyHashMap0.put("s,w,f,m", "太姻姆");
            this.FamilyHashMap0.put("s,w,f,ob", "姻兄");
            this.FamilyHashMap0.put("s,w,f,lb", "姻弟");
            this.FamilyHashMap0.put("d,h,m", "亲家母");
            this.FamilyHashMap0.put("d,h,f", "亲家公");
            this.FamilyHashMap0.put("d,h,f,f", "太姻翁");
            this.FamilyHashMap0.put("d,h,f,m", "太姻姆");
            this.FamilyHashMap0.put("d,h,f,ob", "姻兄");
            this.FamilyHashMap0.put("d,h,f,lb", "姻弟");
            /*----------------------------亲戚互称------------------------------*/
            this.FamilyHashMap1.put("", "");     //自己-自己
            this.FamilyHashMap1.put("h", "w");   //丈夫-妻子
            this.FamilyHashMap1.put("w", "h");   //妻子-丈夫
            this.FamilyHashMap1.put("fM", "s");  //父亲（后代男孩）-儿子
            this.FamilyHashMap1.put("fF", "d");  //父亲（后代女孩）-女儿
            this.FamilyHashMap1.put("mM", "s");  //母亲（后代男孩）-儿子
            this.FamilyHashMap1.put("mF", "d");  //母亲（后代女孩）-女儿
            this.FamilyHashMap1.put("obM", "lb"); //哥哥（同辈男性）-弟弟
            this.FamilyHashMap1.put("obF", "ls"); //哥哥（同辈女性）-妹妹
            this.FamilyHashMap1.put("lbM", "ob"); //弟弟（同辈男性）-哥哥
            this.FamilyHashMap1.put("lbF", "os"); //弟弟（同辈女性）-姐姐
            this.FamilyHashMap1.put("osM", "lb"); //姐姐（同辈男性）-弟弟
            this.FamilyHashMap1.put("osF", "ls"); //姐姐（同辈女性）-妹妹
            this.FamilyHashMap1.put("lsM", "ob"); //妹妹（同辈男性）-哥哥
            this.FamilyHashMap1.put("lsF", "os"); //妹妹（同辈女性）-姐姐
            this.FamilyHashMap1.put("sM", "f");  //儿子（长辈男性）-父亲
            this.FamilyHashMap1.put("sF", "m");  //儿子（长辈女性）-母亲
            this.FamilyHashMap1.put("dM", "f");  //女儿（长辈男性）-父亲
            this.FamilyHashMap1.put("dF", "m");  //女儿（长辈女性）-母亲
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
    }

    /**
     * 计算
     */
    private void simplyFamily() {
        try {
            for (int i = this.familydata1.length() - 1; i > 0; i--) {
                final String pattern = "((\\w{1,3},)*)(\\w{1,3},\\w{1,3})";
                Pattern r = Pattern.compile(pattern);
                Matcher m = r.matcher(this.familydata1.getItem(i));
                if (m.find()) switch (m.group(3)) {
                    case "m,h":
                    case "os,f":
                    case "ob,f":
                    case "ls,f":
                    case "lb,f": {// 母亲的丈夫、兄弟姐妹的父亲-父亲
                        this.familydata1.changeValue(i, m.group(1) + "f");
                        break;
                    }
                    case "f,w":
                    case "os,m":
                    case "ob,m":
                    case "ls,m":
                    case "lb,m": {// 父亲的妻子、兄弟姐妹的母亲-母亲
                        this.familydata1.changeValue(i, m.group(1) + "m");
                        break;
                    }
                    case "d,ob":
                    case "d,lb":
                    case "s,ob":
                    case "s,lb": {// 孩子的兄弟是自己的儿子
                        this.familydata1.changeValue(i, m.group(1) + "s");
                        break;
                    }
                    case "d,os":
                    case "d,ls":
                    case "s,os":
                    case "s,ls": {// 孩子的姐妹是自己的女儿
                        this.familydata1.changeValue(i, m.group(1) + "d");
                        break;
                    }
                    case "os,ob":
                    case "ob,ob": {// 哥哥
                        this.familydata1.changeValue(i, m.group(1) + "ob");
                        break;
                    }
                    case "ls,lb":
                    case "lb,lb": {// 弟弟
                        this.familydata1.changeValue(i, m.group(1) + "lb");
                        break;
                    }
                    case "f,s":
                    case "m,s":
                    case "os,lb":
                    case "ob,lb":
                    case "ls,ob":
                    case "lb,ob": {// 可能是哥哥，弟弟，自己
                        this.familydata1.changeValue(i, m.group(1) + "ob");
                        this.familydata1.add(m.group(1) + "lb");
                        //如果用户仅输入了两位亲戚，则添加自己
                        if (m.group(1).equals("")) this.familydata1.add("");
                        else {//获取倒数第三位性别，男性有可能是自己可化简为“”，女性只可能是哥哥或弟弟，无需化简为“”
                            sex = m.group(1).substring(0, m.group(1).length() - 1);
                            if (sex.indexOf(',') != -1) sex = sex.substring(sex.lastIndexOf(',') + 1);
                            if (FamilyAbilitySlice.isSex())
                                this.familydata1.add(m.group(1).substring(0, m.group(1).lastIndexOf(',')));
                        }
                        break;
                    }
                    case "os,os":
                    case "ob,os": {// 姐姐
                        this.familydata1.changeValue(i, m.group(1) + "os");
                        break;
                    }
                    case "ls,ls":
                    case "lb,ls": {// 妹妹
                        this.familydata1.changeValue(i, m.group(1) + "ls");
                        break;
                    }
                    case "f,d":
                    case "m,d":
                    case "ob,ls":
                    case "os,ls":
                    case "lb,os":
                    case "ls,os": {// 可能是姐姐，妹妹，自己
                        this.familydata1.changeValue(i, m.group(1) + "os");
                        this.familydata1.add(m.group(1) + "ls");
                        //如果用户仅输入了两位亲戚，则添加自己
                        if (m.group(1).equals("")) this.familydata1.add("");
                        else {//获取倒数第三位性别，女性有可能是自己可化简为“”，男性只可能是哥哥或弟弟，无需化简为“”
                            sex = m.group(1).substring(0, m.group(1).length() - 1);
                            if (sex.indexOf(',') != -1) sex = sex.substring(sex.lastIndexOf(',') + 1);
                            if (!FamilyAbilitySlice.isSex())
                                this.familydata1.add(m.group(1).substring(0, m.group(1).lastIndexOf(',')));
                        }
                        break;
                    }
                    case "d,f":
                    case "s,f": {// 女儿或儿子的父亲，需判断倒数第三位性别：男性-父亲，女性-母亲的丈夫（+“h”）
                        // 例：妹妹的女儿的父亲-妹妹的丈夫；弟弟的女儿的父亲-弟弟
                        if (m.group(1).length() != 0) {
                            sex = m.group(1).substring(0, m.group(1).length() - 1);
                            if (sex.indexOf(',') != -1) sex = sex.substring(sex.lastIndexOf(',') + 1);
                            if (FamilyAbilitySlice.isSex())
                                this.familydata1.changeValue(i, m.group(1).substring(0, m.group(1).lastIndexOf(',')));
                            else
                                this.familydata1.changeValue(i, m.group(1) + "h");
                            this.simplyFamily();
                        } else {//如果用户仅输入两位亲戚，则可能是丈夫或自己
                            this.familydata1.changeValue(i, "h");
                            this.familydata1.add("");
                        }
                        break;
                    }

                    case "d,m":
                    case "s,m": {// 女儿或儿子的母亲，需判断倒数第三位性别：女性-母亲，男性-父亲的妻子
                        // 例：妹妹的女儿的母亲-妹妹；弟弟的女儿的母亲-弟弟的妻子
                        if (m.group(1).length() != 0) {
                            sex = m.group(1).substring(0, m.group(1).length() - 1);
                            if (sex.indexOf(',') != -1) sex = sex.substring(sex.lastIndexOf(',') + 1);
                            if (FamilyAbilitySlice.isSex()) this.familydata1.changeValue(i, m.group(1) + "w");
                            else
                                this.familydata1.changeValue(i, m.group(1).substring(0, m.group(1).lastIndexOf(',')));

                            this.simplyFamily();
                        } else {//如果用户仅输入两位亲戚，则可能是妻子或自己
                            this.familydata1.changeValue(i, "w");
                            this.familydata1.add("");
                        }
                        break;
                    }
                    case "h,s":
                    case "w,s": {// 夫妻的儿子是自己的儿子
                        this.familydata1.changeValue(i, m.group(1) + "s");
                        break;
                    }
                    case "h,d":
                    case "w,d": {// 夫妻的女儿是自己的女儿
                        this.familydata1.changeValue(i, m.group(1) + "d");
                        break;
                    }
                    case "w,h":
                    case "h,w": {// 丈夫的妻子
                        this.familydata1.changeValue(i, m.group(1) + "");
                        if (this.familydata1.getItem(i).length() != 0)
                            this.familydata1.changeValue(i, this.familydata1.getItem(i).substring(0,
                                    this.familydata1.getItem(i).length() - 1));
                        break;
                    }
                    default:
                        break;
                }
            }
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
    }

    /**
     * 查找亲戚
     *
     * @return string string
     */
    private String searchFamily() {
        SqListm results = new SqListm(20);
        String relativeResults = "";
        for (int i = 1; i < this.familydata1.length(); i++)
            if (this.FamilyHashMap0.get(this.familydata1.getItem(i)) != null)
                results.add(this.FamilyHashMap0.get(this.familydata1.getItem(i)));
        for (int i = 2; i < results.length() - 1; i++) relativeResults = relativeResults + results.getItem(i) + "/";
        relativeResults += results.getItem(results.length() - 1);
        return relativeResults;
    }

    /**
     * 判断点击
     */
    private void PanDuanKeDian() {
        try {
            this.findComponentById(ResourceTable.Id_f7_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的丈夫");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("h");//线性表所有亲戚关系+“h”
                        FamilyAbilitySlice.this.simplyFamily();//实时化简
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f6_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的妻子");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("w");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f1_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的父亲");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("f");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f2_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的母亲");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("m");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f5_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的哥哥");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("ob");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f10_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的弟弟");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("lb");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f9_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的姐姐");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("os");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f8_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的妹妹");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("ls");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f3_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的儿子");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("s");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
            this.findComponentById(ResourceTable.Id_f4_button).setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component v) {
                    if (FamilyAbilitySlice.this.familydata0.length() < FamilyAbilitySlice.MAXSIZE) {
                        FamilyAbilitySlice.this.familybackdata.push(new SqListm(FamilyAbilitySlice.this.familydata1));
                        FamilyAbilitySlice.this.familydata0.append("的女儿");
                        Text question = (Text) FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fques_field);
                        question.setText(FamilyAbilitySlice.this.familydata0.toString());
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f6_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_f7_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fback_button).setEnabled(true);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_flac_button).setEnabled(false);
                        FamilyAbilitySlice.this.findComponentById(ResourceTable.Id_fcal_button).setEnabled(true);
                        FamilyAbilitySlice.this.familydata1.allItemAppend("d");
                        FamilyAbilitySlice.this.simplyFamily();
                    }
                }
            });
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
    }


    /**
     * 展示数据
     *
     * @param text1 the text 1
     */
    private void ShowDialog(String text1) {
        try {
            ohos.data.distributed.device.DeviceInfo localDeviceInfo = KvManagerFactory.getInstance()
                    .createKvManager(new KvManagerConfig((this))).getLocalDeviceInfo();
            int localDeviceType = Integer.parseInt(localDeviceInfo.getType());
            if (localDeviceType == DeviceInfo.DeviceType.PHONE.value()) {
                new MyToastDialog(this.getContext(), text1, ResourceTable.Graphic_xtoast_framem, 36, 25)
                        .setDuration(120)
                        .setAlignment(LayoutAlignment.BOTTOM)
                        .setOffset(0, 100)
                        .show();
                XLog.info(label, "当前设备类型为手机");
            } else if (localDeviceType == DeviceInfo.DeviceType.TABLET.value()) {
                new MyToastDialog(this.getContext(), text1, ResourceTable.Graphic_xtoast_framet, 43, 37)
                        .setDuration(120)
                        .setAlignment(LayoutAlignment.BOTTOM)
                        .setOffset(0, 100)
                        .show();
                XLog.info(label, "当前设备类型为平板");
            } else {
                XLog.warn(label, "暂不支持您的设备:(" + localDeviceInfo.getType() + ")");
                this.terminateAbility();
            }
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
    }

    /**
     * 移动
     *
     * @param component  the component
     * @param touchEvent the touch event
     * @return boolean boolean
     */
    @Override
    public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
        try {
            int action = touchEvent.getAction();
            ohos.data.distributed.device.DeviceInfo localDeviceInfo = KvManagerFactory.getInstance()
                    .createKvManager(new KvManagerConfig((this))).getLocalDeviceInfo();
            int localDeviceType = Integer.parseInt(localDeviceInfo.getType());
            ohos.global.resource.ResourceManager resManager = this.getResourceManager();
            try {
                text = resManager.getElement(ResourceTable.String_titles).getString();
                text1 = resManager.getElement(ResourceTable.String_titlex).getString();
            } catch (Exception e) {
                XLog.error(label, e.getMessage());
            }
            if (action == TouchEvent.PRIMARY_POINT_DOWN) {
                MmiPoint position = touchEvent.getPointerPosition(0);
                this.starx = position.getX();
                this.stary = position.getY();
            } else if (action == TouchEvent.PRIMARY_POINT_UP) {
                MmiPoint position = touchEvent.getPointerPosition(0);
                this.endx = position.getX();
                this.endy = position.getY();
                if (this.starx > this.endx && Math.abs(this.stary - this.endy) < 123 && Math.abs(this.starx - this.endx) > 156) {
                    final String text2 = "到头了...";
                    if (localDeviceType == DeviceInfo.DeviceType.PHONE.value()) {
                        new MyToastDialog(this.getContext(), text2, ResourceTable.Graphic_xtoast_framem, 40, 25)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为手机");
                    } else if (localDeviceType == DeviceInfo.DeviceType.TABLET.value()) {
                        new MyToastDialog(this.getContext(), text2, ResourceTable.Graphic_xtoast_framet, 48, 37)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为平板");
                    } else {
                        XLog.warn(label, "暂不支持您的设备:(" + localDeviceInfo.getType() + ")");
                        this.terminateAbility();
                    }
                    XLog.info(label, "左滑了");
                } else if (this.starx < this.endx && Math.abs(this.stary - this.endy) < 123 && Math.abs(this.starx - this.endx) > 156) {
                    /*无参--页面跳转开始*/
                    Intent intent = new Intent();
                    Operation operation = new Intent.OperationBuilder()
                            .withDeviceId("")
                            .withBundleName(this.getBundleName())
                            .withAbilityName("com.xcl.calculator.Ability.CaiDanAbility")
                            .build();// 通过Intent中的OperationBuilder类构造operation对象，指定设备标识（空串表示当前设备）、应用包名、Ability名称
                    intent.setOperation(operation);// 把operation设置到intent中
                    this.startAbility(intent);
                    this.onBackPressed();
                    /*页面跳转结束--无参*/
                    XLog.info(label, "右滑了");
                } else /*if (localDeviceType == DeviceInfo.DeviceType.PHONE.value()) {
                        new MyToastDialog(this.getContext(), text, ResourceTable.Graphic_xtoast_framem, 40, 25)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为手机");
                    } else if (localDeviceType == DeviceInfo.DeviceType.TABLET.value()) {
                        new MyToastDialog(this.getContext(), text, ResourceTable.Graphic_xtoast_framet, 48, 37)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为平板");
                    } else {
                        XLog.warn(label, "暂不支持您的设备:(" + localDeviceInfo.getType() + ")");
                        this.terminateAbility();
                    }*/ if (this.stary > this.endy && Math.abs(this.starx - this.endx) < 123 && Math.abs(this.stary - this.endy) > 156)
                    XLog.info(label, "上滑了");
                else /*if (localDeviceType == DeviceInfo.DeviceType.PHONE.value()) {
                        new MyToastDialog(this.getContext(), text1, ResourceTable.Graphic_xtoast_frame1m, 40, 25)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为手机");
                    } else if (localDeviceType == DeviceInfo.DeviceType.TABLET.value()) {
                        new MyToastDialog(this.getContext(), text1, ResourceTable.Graphic_xtoast_frame1t, 48, 37)
                                .setDuration(120)
                                .setAlignment(LayoutAlignment.BOTTOM)
                                .setOffset(0, 100)
                                .show();
                        XLog.info(label, "当前设备类型为平板");
                    } else {
                        XLog.warn(label, "暂不支持您的设备:(" + localDeviceInfo.getType() + ")");
                        this.terminateAbility();
                    }*/ if (this.stary < this.endy && Math.abs(this.starx - this.endx) < 123 && Math.abs(this.stary - this.endy) > 156)
                        XLog.info(label, "下滑了");
                    else XLog.info(label, "无效滑动（请直一点！）");
            } else XLog.info(label, "滑动中");
        } catch (Exception e) {
            AGConnectCrash.getInstance().recordException(e);
            XLog.error(label, e.getMessage());
        }
        return true;
    }

    /**
     * 退出
     *
     * @param keyCode  the key code
     * @param keyEvent the key event
     * @return boolean boolean
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
        if (keyCode == KeyEvent.KEY_BACK) {
            this.ShowDialog("程序退出成功，感谢您的使用!");
            this.terminateAbility();
            return true;
        }
        return super.onKeyDown(keyCode, keyEvent);
    }
}
